\hypertarget{user__main_8c}{}\section{user/user\+\_\+main.c File Reference}
\label{user__main_8c}\index{user/user\+\_\+main.\+c@{user/user\+\_\+main.\+c}}


Main user and initialization code This initialize the platform and runs the main user task. All display updates and task are called from here.  


{\ttfamily \#include $<$stdint.\+h$>$}\\*
{\ttfamily \#include $<$stdarg.\+h$>$}\\*
{\ttfamily \#include $<$string.\+h$>$}\\*
{\ttfamily \#include $<$math.\+h$>$}\\*
{\ttfamily \#include \char`\"{}user\+\_\+config.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}time.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}timer.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}matrix.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}esp8266/system.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}lib/stringsup.\+h\char`\"{}}\\*
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \hyperlink{user__main_8c_a918f64eb53db8e8dc694f36a87646476}{R1}~330000.\+0
\item 
\#define \hyperlink{user__main_8c_a7a255a2815b9453060f51c6eb22cfed8}{R2}~100000.\+0
\item 
\#define \hyperlink{user__main_8c_ab38143b778adc0376cef19233669453b}{V\+E\+R\+R\+OR}~0.\+95
\item 
\#define \hyperlink{user__main_8c_ac51ccb923f4c4f470f00c1f9aa6e2c2b}{V\+S\+C\+A\+LE}~(\hyperlink{user__main_8c_ab38143b778adc0376cef19233669453b}{V\+E\+R\+R\+OR}$\ast$((\hyperlink{user__main_8c_a918f64eb53db8e8dc694f36a87646476}{R1}+\hyperlink{user__main_8c_a7a255a2815b9453060f51c6eb22cfed8}{R2})/\hyperlink{user__main_8c_a7a255a2815b9453060f51c6eb22cfed8}{R2})/1024.\+0)
\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
void \hyperlink{user__main_8c_a8c3a7f0ee91987679040299af24bd503}{ets\+\_\+timer\+\_\+disarm} (\hyperlink{ets__sys_8h_ab895f72aa58b986445e6661c4eacaa86}{E\+T\+S\+Timer} $\ast$ptimer)
\item 
void \hyperlink{user__main_8c_a6ea5d30094305d8b476b09164dd38f3f}{ets\+\_\+timer\+\_\+setfn} (\hyperlink{ets__sys_8h_ab895f72aa58b986445e6661c4eacaa86}{E\+T\+S\+Timer} $\ast$ptimer, \hyperlink{ets__sys_8h_a9b98fc011315c1e79ebaf55e92265afa}{E\+T\+S\+Timer\+Func} $\ast$pfunction, void $\ast$parg)
\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{user__main_8c_aa527aed56b3e044b16d50ca2f6eeb04d}{ms\+\_\+clear} ()
\begin{DoxyCompactList}\small\item\em Clear 1000\+HZ timer We loop in case the update of ms\+\_\+time is not \char`\"{}atomic\char`\"{} -\/ done in a single instruction. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} unsigned long \hyperlink{user__main_8c_a579b1507f56ef6a300ed2b6bcb2dca80}{ms\+\_\+read} ()
\begin{DoxyCompactList}\small\item\em Read 1000\+HZ timer We loop in case the update of ms\+\_\+time is not \char`\"{}atomic\char`\"{} -\/ done in a single instruction. \end{DoxyCompactList}\item 
void \hyperlink{user__main_8c_ad00817ae93e26408219a68cadd8424fa}{ms\+\_\+task} (void)
\begin{DoxyCompactList}\small\item\em 1000\+HZ timer task \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{user__main_8c_af02c169744cad045548cd4d79e6205e4}{ms\+\_\+init} ()
\begin{DoxyCompactList}\small\item\em Initialize 1000\+HZ timer task. \end{DoxyCompactList}\item 
void \hyperlink{user__main_8c_a9aaa25ef08319cd23e2cdee0b6405de5}{ntp\+\_\+setup} (void)
\item 
\hyperlink{user__main_8c_a3142086fde2f8b44c81c6f78beff1cc2}{user\+\_\+tasks} ()
\item 
float \hyperlink{user__main_8c_ac9ad8e3830c026847c00b6d46591dbdb}{adc\+\_\+read} ()
\begin{DoxyCompactList}\small\item\em return system\+\_\+adc\+\_\+read scaled to a float T\+\_\+\+O\+UT pin is connected to the junction of a voltage divider R1 and R2 R1 is connected to V\+CC R2 is connected to ground T\+\_\+\+O\+UT is connected to the junction of R1 and R2 F\+I\+X\+ME T\+\_\+\+O\+UT has a loading value \end{DoxyCompactList}\item 
void \hyperlink{user__main_8c_a9c9fec92b60b251c275870d900294a4a}{user\+\_\+loop} (void)
\item 
void \hyperlink{user__main_8c_afe461d27b9c48d5921c00d521181f12f}{loop} ()
\item 
void \hyperlink{user__main_8c_acf488387a6eadb21c378fffd6f4aae63}{user\+\_\+help} ()
\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{user__main_8c_afbcd3c10e0fec230495931035509d7a3}{user\+\_\+tests} (int argc, char $\ast$argv\mbox{[}$\,$\mbox{]})
\begin{DoxyCompactList}\small\item\em help functions test parser \end{DoxyCompactList}\item 
\hyperlink{user__main_8c_ab4b988c39b8bd19b13221ca57e721f96}{test\+\_\+types} ()
\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{user__main_8c_a53d692b2f2d330182b01bdd9b7f6e97b}{setup} (void)
\begin{DoxyCompactList}\small\item\em \hyperlink{send_8c_a0ddf1224851353fc92bfbff6f499fa97}{main()} Initialize user task \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Variables}
\begin{DoxyCompactItemize}
\item 
unsigned long \hyperlink{user__main_8c_ab3dd732d619a1e8ab21460d8c002a5e5}{ms\+\_\+time} = 0
\item 
int \hyperlink{user__main_8c_ae406634b9e0b25eda1da44f1d4ec26c0}{ntp\+\_\+init} = 0
\item 
int \hyperlink{user__main_8c_a4b92bd10367d44d30a6d932d9f13b79b}{signal\+\_\+loop} = 0
\item 
\hyperlink{time_8h_a3346b04b0420b32ccf6b706551b70762}{time\+\_\+t} \hyperlink{user__main_8c_ae112d79896ed83ac05e155da60e85523}{seconds} = 0
\item 
\hyperlink{send_8c_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} \hyperlink{user__main_8c_ab95878c62fafac494a81c106d05c209a}{ip\+\_\+msg} \mbox{[}$\,$\mbox{]}
\begin{DoxyCompactList}\small\item\em test task Runs corrected cube demo from Sem Optionally wireframe Earth viewer \end{DoxyCompactList}\item 
int \hyperlink{user__main_8c_a13f77b252237844d7b8b6e3c3047fe50}{skip} = 0
\item 
long \hyperlink{user__main_8c_a45ce2b1d7e9e1d263ef7e624ed7aefcf}{last\+\_\+time10} = 0
\item 
long \hyperlink{user__main_8c_a7d885e2666c9e4d5e3a05031f68f431e}{last\+\_\+time50} = 0
\item 
\hyperlink{time_8h_a3346b04b0420b32ccf6b706551b70762}{time\+\_\+t} \hyperlink{user__main_8c_a1559c6c23b2e6367e59be081c3b76d54}{sec} = 0
\item 
int \hyperlink{user__main_8c_a8a01319d7589800db081ee759e210eda}{loop\+\_\+cnt} = 0
\item 
int \hyperlink{user__main_8c_a0386f377ca8a674321b268989560fa2b}{inloop} = 0
\end{DoxyCompactItemize}


\subsection{Detailed Description}
Main user and initialization code This initialize the platform and runs the main user task. All display updates and task are called from here. 

\begin{DoxyParagraph}{Copyright \copyright{} 2015 Mike Gore, G\+PL License}

\end{DoxyParagraph}
\begin{DoxyParagraph}{You are free to use this code under the terms of G\+PL}
please retain a copy of this notice in any code you use it in.
\end{DoxyParagraph}
This is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This software is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU General Public License for more details.

You should have received a copy of the G\+NU General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. 

\subsection{Macro Definition Documentation}
\index{user\+\_\+main.\+c@{user\+\_\+main.\+c}!R1@{R1}}
\index{R1@{R1}!user\+\_\+main.\+c@{user\+\_\+main.\+c}}
\subsubsection[{\texorpdfstring{R1}{R1}}]{\setlength{\rightskip}{0pt plus 5cm}\#define R1~330000.\+0}\hypertarget{user__main_8c_a918f64eb53db8e8dc694f36a87646476}{}\label{user__main_8c_a918f64eb53db8e8dc694f36a87646476}


Definition at line 313 of file user\+\_\+main.\+c.

\index{user\+\_\+main.\+c@{user\+\_\+main.\+c}!R2@{R2}}
\index{R2@{R2}!user\+\_\+main.\+c@{user\+\_\+main.\+c}}
\subsubsection[{\texorpdfstring{R2}{R2}}]{\setlength{\rightskip}{0pt plus 5cm}\#define R2~100000.\+0}\hypertarget{user__main_8c_a7a255a2815b9453060f51c6eb22cfed8}{}\label{user__main_8c_a7a255a2815b9453060f51c6eb22cfed8}


Definition at line 315 of file user\+\_\+main.\+c.

\index{user\+\_\+main.\+c@{user\+\_\+main.\+c}!V\+E\+R\+R\+OR@{V\+E\+R\+R\+OR}}
\index{V\+E\+R\+R\+OR@{V\+E\+R\+R\+OR}!user\+\_\+main.\+c@{user\+\_\+main.\+c}}
\subsubsection[{\texorpdfstring{V\+E\+R\+R\+OR}{VERROR}}]{\setlength{\rightskip}{0pt plus 5cm}\#define V\+E\+R\+R\+OR~0.\+95}\hypertarget{user__main_8c_ab38143b778adc0376cef19233669453b}{}\label{user__main_8c_ab38143b778adc0376cef19233669453b}


Definition at line 319 of file user\+\_\+main.\+c.

\index{user\+\_\+main.\+c@{user\+\_\+main.\+c}!V\+S\+C\+A\+LE@{V\+S\+C\+A\+LE}}
\index{V\+S\+C\+A\+LE@{V\+S\+C\+A\+LE}!user\+\_\+main.\+c@{user\+\_\+main.\+c}}
\subsubsection[{\texorpdfstring{V\+S\+C\+A\+LE}{VSCALE}}]{\setlength{\rightskip}{0pt plus 5cm}\#define V\+S\+C\+A\+LE~({\bf V\+E\+R\+R\+OR}$\ast$(({\bf R1}+{\bf R2})/{\bf R2})/1024.\+0)}\hypertarget{user__main_8c_ac51ccb923f4c4f470f00c1f9aa6e2c2b}{}\label{user__main_8c_ac51ccb923f4c4f470f00c1f9aa6e2c2b}


Definition at line 321 of file user\+\_\+main.\+c.



Referenced by adc\+\_\+read().



\subsection{Function Documentation}
\index{user\+\_\+main.\+c@{user\+\_\+main.\+c}!adc\+\_\+read@{adc\+\_\+read}}
\index{adc\+\_\+read@{adc\+\_\+read}!user\+\_\+main.\+c@{user\+\_\+main.\+c}}
\subsubsection[{\texorpdfstring{adc\+\_\+read()}{adc_read()}}]{\setlength{\rightskip}{0pt plus 5cm}float adc\+\_\+read (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}\hypertarget{user__main_8c_ac9ad8e3830c026847c00b6d46591dbdb}{}\label{user__main_8c_ac9ad8e3830c026847c00b6d46591dbdb}


return system\+\_\+adc\+\_\+read scaled to a float T\+\_\+\+O\+UT pin is connected to the junction of a voltage divider R1 and R2 R1 is connected to V\+CC R2 is connected to ground T\+\_\+\+O\+UT is connected to the junction of R1 and R2 F\+I\+X\+ME T\+\_\+\+O\+UT has a loading value 

\begin{DoxyReturn}{Returns}
float 
\end{DoxyReturn}


Definition at line 332 of file user\+\_\+main.\+c.



Referenced by user\+\_\+loop().

\index{user\+\_\+main.\+c@{user\+\_\+main.\+c}!ets\+\_\+timer\+\_\+disarm@{ets\+\_\+timer\+\_\+disarm}}
\index{ets\+\_\+timer\+\_\+disarm@{ets\+\_\+timer\+\_\+disarm}!user\+\_\+main.\+c@{user\+\_\+main.\+c}}
\subsubsection[{\texorpdfstring{ets\+\_\+timer\+\_\+disarm(\+E\+T\+S\+Timer $\ast$ptimer)}{ets_timer_disarm(ETSTimer *ptimer)}}]{\setlength{\rightskip}{0pt plus 5cm}void ets\+\_\+timer\+\_\+disarm (
\begin{DoxyParamCaption}
\item[{{\bf E\+T\+S\+Timer} $\ast$}]{ptimer}
\end{DoxyParamCaption}
)}\hypertarget{user__main_8c_a8c3a7f0ee91987679040299af24bd503}{}\label{user__main_8c_a8c3a7f0ee91987679040299af24bd503}
\index{user\+\_\+main.\+c@{user\+\_\+main.\+c}!ets\+\_\+timer\+\_\+setfn@{ets\+\_\+timer\+\_\+setfn}}
\index{ets\+\_\+timer\+\_\+setfn@{ets\+\_\+timer\+\_\+setfn}!user\+\_\+main.\+c@{user\+\_\+main.\+c}}
\subsubsection[{\texorpdfstring{ets\+\_\+timer\+\_\+setfn(\+E\+T\+S\+Timer $\ast$ptimer, E\+T\+S\+Timer\+Func $\ast$pfunction, void $\ast$parg)}{ets_timer_setfn(ETSTimer *ptimer, ETSTimerFunc *pfunction, void *parg)}}]{\setlength{\rightskip}{0pt plus 5cm}void ets\+\_\+timer\+\_\+setfn (
\begin{DoxyParamCaption}
\item[{{\bf E\+T\+S\+Timer} $\ast$}]{ptimer, }
\item[{{\bf E\+T\+S\+Timer\+Func} $\ast$}]{pfunction, }
\item[{void $\ast$}]{parg}
\end{DoxyParamCaption}
)}\hypertarget{user__main_8c_a6ea5d30094305d8b476b09164dd38f3f}{}\label{user__main_8c_a6ea5d30094305d8b476b09164dd38f3f}
\index{user\+\_\+main.\+c@{user\+\_\+main.\+c}!loop@{loop}}
\index{loop@{loop}!user\+\_\+main.\+c@{user\+\_\+main.\+c}}
\subsubsection[{\texorpdfstring{loop()}{loop()}}]{\setlength{\rightskip}{0pt plus 5cm}void loop (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}\hypertarget{user__main_8c_afe461d27b9c48d5921c00d521181f12f}{}\label{user__main_8c_afe461d27b9c48d5921c00d521181f12f}


Definition at line 533 of file user\+\_\+main.\+c.



Referenced by atexit(), and loop\+\_\+wrapper().

\index{user\+\_\+main.\+c@{user\+\_\+main.\+c}!ms\+\_\+clear@{ms\+\_\+clear}}
\index{ms\+\_\+clear@{ms\+\_\+clear}!user\+\_\+main.\+c@{user\+\_\+main.\+c}}
\subsubsection[{\texorpdfstring{ms\+\_\+clear()}{ms_clear()}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void ms\+\_\+clear (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}\hypertarget{user__main_8c_aa527aed56b3e044b16d50ca2f6eeb04d}{}\label{user__main_8c_aa527aed56b3e044b16d50ca2f6eeb04d}


Clear 1000\+HZ timer We loop in case the update of ms\+\_\+time is not \char`\"{}atomic\char`\"{} -\/ done in a single instruction. 

\begin{DoxyReturn}{Returns}
void. 
\end{DoxyReturn}


Definition at line 136 of file user\+\_\+main.\+c.

\index{user\+\_\+main.\+c@{user\+\_\+main.\+c}!ms\+\_\+init@{ms\+\_\+init}}
\index{ms\+\_\+init@{ms\+\_\+init}!user\+\_\+main.\+c@{user\+\_\+main.\+c}}
\subsubsection[{\texorpdfstring{ms\+\_\+init()}{ms_init()}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void ms\+\_\+init (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}\hypertarget{user__main_8c_af02c169744cad045548cd4d79e6205e4}{}\label{user__main_8c_af02c169744cad045548cd4d79e6205e4}


Initialize 1000\+HZ timer task. 

\begin{DoxyReturn}{Returns}
void. 
\end{DoxyReturn}


Definition at line 166 of file user\+\_\+main.\+c.



Referenced by setup().

\index{user\+\_\+main.\+c@{user\+\_\+main.\+c}!ms\+\_\+read@{ms\+\_\+read}}
\index{ms\+\_\+read@{ms\+\_\+read}!user\+\_\+main.\+c@{user\+\_\+main.\+c}}
\subsubsection[{\texorpdfstring{ms\+\_\+read()}{ms_read()}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} unsigned long ms\+\_\+read (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}\hypertarget{user__main_8c_a579b1507f56ef6a300ed2b6bcb2dca80}{}\label{user__main_8c_a579b1507f56ef6a300ed2b6bcb2dca80}


Read 1000\+HZ timer We loop in case the update of ms\+\_\+time is not \char`\"{}atomic\char`\"{} -\/ done in a single instruction. 

\begin{DoxyReturn}{Returns}
time in milliseconds 
\end{DoxyReturn}


Definition at line 146 of file user\+\_\+main.\+c.



Referenced by user\+\_\+loop().

\index{user\+\_\+main.\+c@{user\+\_\+main.\+c}!ms\+\_\+task@{ms\+\_\+task}}
\index{ms\+\_\+task@{ms\+\_\+task}!user\+\_\+main.\+c@{user\+\_\+main.\+c}}
\subsubsection[{\texorpdfstring{ms\+\_\+task(void)}{ms_task(void)}}]{\setlength{\rightskip}{0pt plus 5cm}void ms\+\_\+task (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}\hypertarget{user__main_8c_ad00817ae93e26408219a68cadd8424fa}{}\label{user__main_8c_ad00817ae93e26408219a68cadd8424fa}


1000\+HZ timer task 

\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 158 of file user\+\_\+main.\+c.



Referenced by ms\+\_\+init().

\index{user\+\_\+main.\+c@{user\+\_\+main.\+c}!ntp\+\_\+setup@{ntp\+\_\+setup}}
\index{ntp\+\_\+setup@{ntp\+\_\+setup}!user\+\_\+main.\+c@{user\+\_\+main.\+c}}
\subsubsection[{\texorpdfstring{ntp\+\_\+setup(void)}{ntp_setup(void)}}]{\setlength{\rightskip}{0pt plus 5cm}void ntp\+\_\+setup (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}\hypertarget{user__main_8c_a9aaa25ef08319cd23e2cdee0b6405de5}{}\label{user__main_8c_a9aaa25ef08319cd23e2cdee0b6405de5}


Definition at line 176 of file user\+\_\+main.\+c.



Referenced by user\+\_\+loop().

\index{user\+\_\+main.\+c@{user\+\_\+main.\+c}!setup@{setup}}
\index{setup@{setup}!user\+\_\+main.\+c@{user\+\_\+main.\+c}}
\subsubsection[{\texorpdfstring{setup(void)}{setup(void)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void setup (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}\hypertarget{user__main_8c_a53d692b2f2d330182b01bdd9b7f6e97b}{}\label{user__main_8c_a53d692b2f2d330182b01bdd9b7f6e97b}


\hyperlink{send_8c_a0ddf1224851353fc92bfbff6f499fa97}{main()} Initialize user task 

\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 971 of file user\+\_\+main.\+c.



Referenced by atexit(), loop\+\_\+wrapper(), and user\+\_\+init().

\index{user\+\_\+main.\+c@{user\+\_\+main.\+c}!test\+\_\+types@{test\+\_\+types}}
\index{test\+\_\+types@{test\+\_\+types}!user\+\_\+main.\+c@{user\+\_\+main.\+c}}
\subsubsection[{\texorpdfstring{test\+\_\+types()}{test_types()}}]{\setlength{\rightskip}{0pt plus 5cm}test\+\_\+types (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}\hypertarget{user__main_8c_ab4b988c39b8bd19b13221ca57e721f96}{}\label{user__main_8c_ab4b988c39b8bd19b13221ca57e721f96}
test byte order and basic type sizes 

Definition at line 783 of file user\+\_\+main.\+c.



Referenced by setup().

\index{user\+\_\+main.\+c@{user\+\_\+main.\+c}!user\+\_\+help@{user\+\_\+help}}
\index{user\+\_\+help@{user\+\_\+help}!user\+\_\+main.\+c@{user\+\_\+main.\+c}}
\subsubsection[{\texorpdfstring{user\+\_\+help()}{user_help()}}]{\setlength{\rightskip}{0pt plus 5cm}void user\+\_\+help (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}\hypertarget{user__main_8c_acf488387a6eadb21c378fffd6f4aae63}{}\label{user__main_8c_acf488387a6eadb21c378fffd6f4aae63}


Definition at line 592 of file user\+\_\+main.\+c.



Referenced by user\+\_\+tests().

\index{user\+\_\+main.\+c@{user\+\_\+main.\+c}!user\+\_\+loop@{user\+\_\+loop}}
\index{user\+\_\+loop@{user\+\_\+loop}!user\+\_\+main.\+c@{user\+\_\+main.\+c}}
\subsubsection[{\texorpdfstring{user\+\_\+loop(void)}{user_loop(void)}}]{\setlength{\rightskip}{0pt plus 5cm}void user\+\_\+loop (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}\hypertarget{user__main_8c_a9c9fec92b60b251c275870d900294a4a}{}\label{user__main_8c_a9c9fec92b60b251c275870d900294a4a}


Definition at line 348 of file user\+\_\+main.\+c.



Referenced by loop().

\index{user\+\_\+main.\+c@{user\+\_\+main.\+c}!user\+\_\+tasks@{user\+\_\+tasks}}
\index{user\+\_\+tasks@{user\+\_\+tasks}!user\+\_\+main.\+c@{user\+\_\+main.\+c}}
\subsubsection[{\texorpdfstring{user\+\_\+tasks()}{user_tasks()}}]{\setlength{\rightskip}{0pt plus 5cm}user\+\_\+tasks (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}\hypertarget{user__main_8c_a3142086fde2f8b44c81c6f78beff1cc2}{}\label{user__main_8c_a3142086fde2f8b44c81c6f78beff1cc2}
second argument 1 = only report when an E\+OL is detected\+E\+OL 

Definition at line 274 of file user\+\_\+main.\+c.



Referenced by user\+\_\+loop().

\index{user\+\_\+main.\+c@{user\+\_\+main.\+c}!user\+\_\+tests@{user\+\_\+tests}}
\index{user\+\_\+tests@{user\+\_\+tests}!user\+\_\+main.\+c@{user\+\_\+main.\+c}}
\subsubsection[{\texorpdfstring{user\+\_\+tests(int argc, char $\ast$argv[])}{user_tests(int argc, char *argv[])}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int user\+\_\+tests (
\begin{DoxyParamCaption}
\item[{int}]{argc, }
\item[{char $\ast$}]{argv\mbox{[}$\,$\mbox{]}}
\end{DoxyParamCaption}
)}\hypertarget{user__main_8c_afbcd3c10e0fec230495931035509d7a3}{}\label{user__main_8c_afbcd3c10e0fec230495931035509d7a3}


help functions test parser 


\begin{DoxyItemize}
\item Keywords and arguments are matched against test functions If there are matched the function along with its arguments are called. 
\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em str} & User supplied command line\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
1 The return code indicates a command matched. 

0 if no rules matched 
\end{DoxyReturn}

\end{DoxyItemize}

Definition at line 631 of file user\+\_\+main.\+c.



Referenced by user\+\_\+tasks().



\subsection{Variable Documentation}
\index{user\+\_\+main.\+c@{user\+\_\+main.\+c}!inloop@{inloop}}
\index{inloop@{inloop}!user\+\_\+main.\+c@{user\+\_\+main.\+c}}
\subsubsection[{\texorpdfstring{inloop}{inloop}}]{\setlength{\rightskip}{0pt plus 5cm}int inloop = 0}\hypertarget{user__main_8c_a0386f377ca8a674321b268989560fa2b}{}\label{user__main_8c_a0386f377ca8a674321b268989560fa2b}


Definition at line 532 of file user\+\_\+main.\+c.



Referenced by loop().

\index{user\+\_\+main.\+c@{user\+\_\+main.\+c}!ip\+\_\+msg@{ip\+\_\+msg}}
\index{ip\+\_\+msg@{ip\+\_\+msg}!user\+\_\+main.\+c@{user\+\_\+main.\+c}}
\subsubsection[{\texorpdfstring{ip\+\_\+msg}{ip_msg}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf uint8\+\_\+t} ip\+\_\+msg\mbox{[}$\,$\mbox{]}}\hypertarget{user__main_8c_ab95878c62fafac494a81c106d05c209a}{}\label{user__main_8c_ab95878c62fafac494a81c106d05c209a}


test task Runs corrected cube demo from Sem Optionally wireframe Earth viewer 

\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 51 of file network.\+c.



Referenced by setup(), setup\+\_\+networking(), and wifi\+\_\+event\+\_\+cb().

\index{user\+\_\+main.\+c@{user\+\_\+main.\+c}!last\+\_\+time10@{last\+\_\+time10}}
\index{last\+\_\+time10@{last\+\_\+time10}!user\+\_\+main.\+c@{user\+\_\+main.\+c}}
\subsubsection[{\texorpdfstring{last\+\_\+time10}{last_time10}}]{\setlength{\rightskip}{0pt plus 5cm}long last\+\_\+time10 = 0}\hypertarget{user__main_8c_a45ce2b1d7e9e1d263ef7e624ed7aefcf}{}\label{user__main_8c_a45ce2b1d7e9e1d263ef7e624ed7aefcf}


Definition at line 306 of file user\+\_\+main.\+c.



Referenced by user\+\_\+loop().

\index{user\+\_\+main.\+c@{user\+\_\+main.\+c}!last\+\_\+time50@{last\+\_\+time50}}
\index{last\+\_\+time50@{last\+\_\+time50}!user\+\_\+main.\+c@{user\+\_\+main.\+c}}
\subsubsection[{\texorpdfstring{last\+\_\+time50}{last_time50}}]{\setlength{\rightskip}{0pt plus 5cm}long last\+\_\+time50 = 0}\hypertarget{user__main_8c_a7d885e2666c9e4d5e3a05031f68f431e}{}\label{user__main_8c_a7d885e2666c9e4d5e3a05031f68f431e}


Definition at line 307 of file user\+\_\+main.\+c.



Referenced by user\+\_\+loop().

\index{user\+\_\+main.\+c@{user\+\_\+main.\+c}!loop\+\_\+cnt@{loop\+\_\+cnt}}
\index{loop\+\_\+cnt@{loop\+\_\+cnt}!user\+\_\+main.\+c@{user\+\_\+main.\+c}}
\subsubsection[{\texorpdfstring{loop\+\_\+cnt}{loop_cnt}}]{\setlength{\rightskip}{0pt plus 5cm}int loop\+\_\+cnt = 0}\hypertarget{user__main_8c_a8a01319d7589800db081ee759e210eda}{}\label{user__main_8c_a8a01319d7589800db081ee759e210eda}


Definition at line 310 of file user\+\_\+main.\+c.

\index{user\+\_\+main.\+c@{user\+\_\+main.\+c}!ms\+\_\+time@{ms\+\_\+time}}
\index{ms\+\_\+time@{ms\+\_\+time}!user\+\_\+main.\+c@{user\+\_\+main.\+c}}
\subsubsection[{\texorpdfstring{ms\+\_\+time}{ms_time}}]{\setlength{\rightskip}{0pt plus 5cm}unsigned long ms\+\_\+time = 0}\hypertarget{user__main_8c_ab3dd732d619a1e8ab21460d8c002a5e5}{}\label{user__main_8c_ab3dd732d619a1e8ab21460d8c002a5e5}


Definition at line 127 of file user\+\_\+main.\+c.



Referenced by ms\+\_\+clear(), ms\+\_\+init(), ms\+\_\+read(), and ms\+\_\+task().

\index{user\+\_\+main.\+c@{user\+\_\+main.\+c}!ntp\+\_\+init@{ntp\+\_\+init}}
\index{ntp\+\_\+init@{ntp\+\_\+init}!user\+\_\+main.\+c@{user\+\_\+main.\+c}}
\subsubsection[{\texorpdfstring{ntp\+\_\+init}{ntp_init}}]{\setlength{\rightskip}{0pt plus 5cm}int ntp\+\_\+init = 0}\hypertarget{user__main_8c_ae406634b9e0b25eda1da44f1d4ec26c0}{}\label{user__main_8c_ae406634b9e0b25eda1da44f1d4ec26c0}


Definition at line 175 of file user\+\_\+main.\+c.



Referenced by ntp\+\_\+setup().

\index{user\+\_\+main.\+c@{user\+\_\+main.\+c}!sec@{sec}}
\index{sec@{sec}!user\+\_\+main.\+c@{user\+\_\+main.\+c}}
\subsubsection[{\texorpdfstring{sec}{sec}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf time\+\_\+t} sec = 0}\hypertarget{user__main_8c_a1559c6c23b2e6367e59be081c3b76d54}{}\label{user__main_8c_a1559c6c23b2e6367e59be081c3b76d54}


Definition at line 308 of file user\+\_\+main.\+c.



Referenced by ntp\+\_\+setup(), tm2epoch(), and user\+\_\+loop().

\index{user\+\_\+main.\+c@{user\+\_\+main.\+c}!seconds@{seconds}}
\index{seconds@{seconds}!user\+\_\+main.\+c@{user\+\_\+main.\+c}}
\subsubsection[{\texorpdfstring{seconds}{seconds}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf time\+\_\+t} seconds = 0}\hypertarget{user__main_8c_ae112d79896ed83ac05e155da60e85523}{}\label{user__main_8c_ae112d79896ed83ac05e155da60e85523}


Definition at line 293 of file user\+\_\+main.\+c.



Referenced by clock\+\_\+set(), display\+\_\+clock(), initialize\+\_\+clock(), setdate\+\_\+r(), timegm(), tm2epoch(), and user\+\_\+loop().

\index{user\+\_\+main.\+c@{user\+\_\+main.\+c}!signal\+\_\+loop@{signal\+\_\+loop}}
\index{signal\+\_\+loop@{signal\+\_\+loop}!user\+\_\+main.\+c@{user\+\_\+main.\+c}}
\subsubsection[{\texorpdfstring{signal\+\_\+loop}{signal_loop}}]{\setlength{\rightskip}{0pt plus 5cm}int signal\+\_\+loop = 0}\hypertarget{user__main_8c_a4b92bd10367d44d30a6d932d9f13b79b}{}\label{user__main_8c_a4b92bd10367d44d30a6d932d9f13b79b}


Definition at line 291 of file user\+\_\+main.\+c.

\index{user\+\_\+main.\+c@{user\+\_\+main.\+c}!skip@{skip}}
\index{skip@{skip}!user\+\_\+main.\+c@{user\+\_\+main.\+c}}
\subsubsection[{\texorpdfstring{skip}{skip}}]{\setlength{\rightskip}{0pt plus 5cm}int skip = 0}\hypertarget{user__main_8c_a13f77b252237844d7b8b6e3c3047fe50}{}\label{user__main_8c_a13f77b252237844d7b8b6e3c3047fe50}


Definition at line 304 of file user\+\_\+main.\+c.



Referenced by Font\+Adjust\+Full(), and Font\+Adjust\+Small().

